在前面的單元測試部分與前一天的Cypress我們都講到使用假資料來,我們不一定隨時都是使用mock一個假資料(fake data)來當作測試,可能會在某個beta階段時使用beta API來當作真正的模擬使用者在使用的情境.舉個例來說,我們需要在做登入驗證的時候需要authToken,但是在做測試的時候我們可以先用cy.request取得相關token或者是在做別的測試時的測試資料的取得.
cy.request('https://jsonplaceholder.typicode.com/todos/1').as('apiCall');
這段會真的call api出去的動作,這邊打的雖然是萬用API,但你可以想像成取得token的動作?
cy.get('@apiCall').should(res => {
expect().to.equal() //驗證回傳的資料
or
可能res接到的是token
window.localstorage.setItem('token', res.token);
之類的設計
});
那寫到這邊,大家可以想一下那我們如果很多隻測試都要先登入怎辦,這時候我們可以寫成commands
Cypress.commands.add('commands name ex: getToken', (args) => {
然後這邊我們可以把上面的一些request code拉下來來達到一個共用模組的效果
});
接下來我們只要在各個測試檔案
beforeEach(() => {
cy.getToken()
});
他就會在各個測試之前都會先去後端取得token,然後執行你接下來的動作,commands這邊,就明天再寫.
參考: